package com.xhsj.user.hr.system.entity;

import java.math.BigDecimal;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.google.common.collect.Lists;
import com.xhsj.user.hr.base.BaseEntity;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.*;
import com.xhsj.user.hr.system.vo.LeaveTimeVo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * hr流程-离职交接申请表
 * </p>
 *
 * @author suxiaolin
 * @since 2020-09-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("tb_hr_approval_dimission_handover_apply")
public class TbHrApprovalDimissionHandoverApply extends BaseEntity<TbHrApprovalDimissionHandoverApply> {

    private static final long serialVersionUID = 1L;

    /**
     * 离职申请id 外键 tb_hr_approval_dimission_apply 表id
     */
    @TableField("dimission_apply_id")
    private Long dimissionApplyId;

    /**
     * 未完成工作
     */
    @TableField("unfinish_job")
    private String unfinishJob;

    /**
     * 本部门接收人    外键 tb_global_user id
     */
    @TableField("department_recive_user")
    private Long departmentReciveUser;

    /**
     * 建议竞业限制  1 解除 2 生效
     */
    @TableField("suggest_non_competition")
    private Integer suggestNonCompetition;


    /**
     * 竞业限制确认  1 解除 2 生效
     */
    @TableField("confirm_non_competition")
    private Integer confirmNonCompetition;

    /**
     * 竞业限制月数
     */
    @TableField("non_competition_month")
    private Integer nonCompetitionMonth;

    /**
     * 本部门接收时间
     */
    @TableField("department_recive_date")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date departmentReciveDate;

    /**
     * 人事：员工账户
     */
    @TableField("bank_account")
    private String bankAccount;

    /**
     * 正常时间上班说明
     */
    @TableField("work_salary_description")
    private String workSalaryDescription;

    /**
     * 正常时间工资
     */
    @TableField("work_salary_money")
    private BigDecimal workSalaryMoney;

    /**
     * 代扣公积金描述
     */
    @TableField("accumulation_fund_description")
    private String accumulationFundDescription;

    /**
     * 代扣公积金金额
     */
    @TableField("accumulation_fund_money")
    private BigDecimal accumulationFundMoney;

    /**
     * 代扣社保
     */
    @TableField("social_security_description")
    private String socialSecurityDescription;

    /**
     * 代扣社保
     */
    @TableField("social_security_money")
    private BigDecimal socialSecurityMoney;

    /**
     * 代扣个税
     */
    @TableField("income_tax_description")
    private String incomeTaxDescription;

    /**
     * 代扣个税
     */
    @TableField("income_tax_money")
    private BigDecimal incomeTaxMoney;

    /**
     * 其他应付
     */
    @TableField("other_pay_description")
    private String otherPayDescription;

    /**
     * 其他应付
     */
    @TableField("other_pay_money")
    private BigDecimal otherPayMoney;

    /**
     * 其他扣除
     */
    @TableField("other_deduction_description")
    private String otherDeductionDescription;

    /**
     * 其他扣除
     */
    @TableField("other_deduction_money")
    private BigDecimal otherDeductionMoney;

    /**
     * 总计应付
     */
    @TableField("sum_pay_description")
    private String sumPayDescription;

    /**
     * 总计应付
     */
    @TableField("sum_pay_money")
    private BigDecimal sumPayMoney;

    /**
     * 借款
     */
    @TableField("borrowing_money")
    private String borrowingMoney;

    /**
     * 借款说明
     */
    @TableField("borrowing_description")
    private String borrowingDescription;

    /**
     * 未报销账目
     */
    @TableField("unclaimed_account")
    private String unclaimedAccount;

    /**
     * 未报销账目说明
     */
    @TableField("account_description")
    private String accountDescription;

    /**
     * 其他未结清事项
     */
    @TableField("unfinish_items")
    private String unfinishItems;

    /**
     * 其他未结清事项说明
     */
    @TableField("items_description")
    private String itemsDescription;

    /**
     * 流程id 外键  tb_global_business id
     */
    @TableField("business_id")
    private Long businessId;

    /**
     * 申请人id 外键 tb_global_user表id
     */
    @TableField("apply_user_id")
    private Long applyUserId;

    /**
     * 部门id 逻辑外键 tb_global_organization表id
     */
    @TableField("department_id")
    private Long departmentId;

    /**
     * 申请人名称
     */
    @TableField("apply_user_name")
    private String applyUserName;

    /**
     * 审核信息
     */
    @TableField("node_id")
    private Long nodeId;

    /**
     * 节点名称
     */
    @TableField("node_name")
    private String nodeName;

    /**
     * 行政是否接收完成
     */
    @TableField("ad_part_finish")
    private Integer adPartFinish;
    /**
     * 申请人确认 0 确认 1 未确认
     */
    @TableField("apply_part_finish")
    private Integer applyPartFinish;

    /**
     * 人事确认 0 确认 1 未确认
     */
    @TableField("hr_part_finish")
    private Integer hrPartFinish;

    /**
     * 综合管理部负责人确认 0 确认 1 未确认
     */
    @TableField("management_part_finish")
    private Integer managementPartFinish;

    /**
     * 财务确认 0 确认 1 未确认
     */
    @TableField("finance_part_finish")
    private Integer financePartFinish;

    /**
     * 总经理确认 0 确认 1 未确认
     */
    @TableField("boss_part_finish")
    private Integer bossPartFinish;

    /**
     * 是否需要申请人确认 0 是 1 否
     */
    @TableField("need_apply_confirm")
    private Integer needApplyConfirm;

    /**
     * 部门确认 0 是 1 否
     */
    @TableField("dept_confirm")
    private Integer deptConfirm;


    /**
     *  行政交接说明
     */
    @TableField("ad_description")
    private String adDescription;

    /**
     * 交接事项
     */
    @TableField(exist = false)
    private List<String> matters;
    /**
     * 交接事项
     */
    @TableField(exist = false)
    private List<String> goods;

    /**
     * 请假情况
     */
    @TableField(exist = false)
    private List<LeaveTimeVo> leave = Lists.newArrayList();

    /**
     * 年假可用
     */
    @TableField(exist = false)
    private int annualLeaveUsable;

    /**
     * 加班可用
     */
    @TableField(exist = false)
    private int surplusTime;

    /**
     * 当前审核角色
     */
    @TableField(exist = false)
    private String currAuditRole;

    /**
     *申请人确认意见
     */
    @TableField("apply_confirm_opinion")
    private String applyConfirmOpinion;

    /**
     * 出勤天数
     */
    @TableField("work_days")
    private String workDays;




}
